home *** CD-ROM | disk | FTP | other *** search
/ Software 2000 / Software 2000 Volume 1 (Disc 1 of 2).iso / utilities / u294.dms / u294.adf / source / Fut-replayer.S next >
Text File  |  1995-07-23  |  18KB  |  788 lines

  1. ******************************************************
  2. **  Amiga FUTURE COMPOSER V1.0  --  Replay routine  **
  3. ******************************************************
  4.  
  5. MODULE = $60000
  6.  
  7. move.l $4,a6        ;This little routine
  8. jsr -132(a6)        ;is only for test purposes
  9. bsr.L init_music    ;(Raster time measuring)
  10. ploop:            ;and is not needed by the
  11. move.w #0,$dff180    ;replay routine!
  12. cmpi.b #$80,$dff006
  13. bne.s ploop        ;The results i got from the
  14. move.w #8,$dff180    ;test, is a use of approximatly
  15. bsr play        ;15-20 raster lines
  16. btst #6,$bfe001        ;which means that you need to
  17. bne.s ploop        ;allocate 20 RASTER LINES
  18. bsr.s end_music        ;------------------------
  19. move.l $4,a6
  20. jmp -138(a6)
  21.  
  22.  
  23. PLAY_MUSIC:
  24. bra.l PLAY
  25.  
  26. END_MUSIC:
  27. clr.w onoff
  28. clr.l $dff0a6
  29. clr.l $dff0b6
  30. clr.l $dff0c6
  31. clr.l $dff0d6
  32. move.w #$000f,$dff096
  33. bclr #1,$bfe001
  34. rts
  35.  
  36. INIT_MUSIC:
  37. move.w #1,onoff
  38. bset #1,$bfe001
  39. lea MODULE,a0
  40. lea 100(a0),a1
  41. move.l a1,SEQpoint
  42. move.l a0,a1
  43. add.l 8(a0),a1
  44. move.l a1,PATpoint
  45. move.l a0,a1
  46. add.l 16(a0),a1
  47. move.l a1,FRQpoint
  48. move.l a0,a1
  49. add.l 24(a0),a1
  50. move.l a1,VOLpoint
  51. move.l 4(a0),d0
  52. divu #13,d0
  53.  
  54. lea 40(a0),a1
  55. lea SOUNDINFO+4(pc),a2
  56. moveq #10-1,d1
  57. initloop:
  58. move.w (a1)+,(a2)+
  59. move.l (a1)+,(a2)+
  60. addq.w #4,a2
  61. dbf d1,initloop
  62. moveq #0,d2
  63. move.l a0,d1
  64. add.l 32(a0),d1
  65. sub.l #WAVEFORMS,d1
  66. lea SOUNDINFO(pc),a0
  67. move.l d1,(a0)+
  68. moveq #9-1,d3
  69. initloop1:
  70. move.w (a0),d2
  71. add.l d2,d1
  72. add.l d2,d1
  73. addq.w #6,a0
  74. move.l d1,(a0)+
  75. dbf d3,initloop1
  76.  
  77. move.l SEQpoint(pc),a0
  78. moveq #0,d2
  79. move.b 12(a0),d2        ;Get replay speed
  80. bne.s speedok
  81. move.b #3,d2            ;Set default speed
  82. speedok:
  83. move.w d2,respcnt        ;Init repspeed counter
  84. move.w d2,repspd
  85. INIT2:
  86. clr.w audtemp
  87. move.w #$000f,$dff096        ;Disable audio DMA
  88. move.w #$0780,$dff09a        ;Disable audio IRQ
  89. moveq #0,d7
  90. mulu #13,d0
  91. moveq #4-1,d6            ;Number of soundchannels-1
  92. lea V1data(pc),a0        ;Point to 1st voice data area
  93. lea silent(pc),a1
  94. lea o4a0c8(pc),a2
  95. initloop2:
  96. move.l a1,10(a0)
  97. move.l a1,18(a0)
  98. clr.l 14(a0)
  99. clr.b 45(a0)
  100. clr.b 47(a0)
  101. clr.w 8(a0)
  102. clr.l 48(a0)
  103. move.b #$01,23(a0)
  104. move.b #$01,24(a0)
  105. clr.b 25(a0)
  106. clr.l 26(a0)
  107. clr.w 30(a0)
  108. moveq #$00,d3
  109. move.w (a2)+,d1
  110. move.w (a2)+,d3
  111. divu #$0003,d3
  112. move.b d3,32(a0)
  113. mulu #$0003,d3
  114. andi.l #$00ff,d3
  115. andi.l #$00ff,d1
  116. addi.l #$dff0a0,d1
  117. move.l d1,a6
  118. move.l #$0000,(a6)
  119. move.w #$0100,4(a6)
  120. move.w #$0000,6(a6)
  121. move.w #$0000,8(a6)
  122. move.l d1,60(a0)
  123. clr.w 64(a0)
  124. move.l SEQpoint(pc),(a0)
  125. move.l SEQpoint(pc),52(a0)
  126. add.l d0,52(a0)
  127. add.l d3,52(a0)
  128. add.l d7,(a0)
  129. add.l d3,(a0)
  130. move.w #$000d,6(a0)
  131. move.l (a0),a3
  132. move.b (a3),d1
  133. andi.l #$00ff,d1
  134. lsl.w #6,d1
  135. move.l PATpoint(pc),a4
  136. adda.w d1,a4
  137. move.l a4,34(a0)
  138. clr.l 38(a0)
  139. move.b #$01,33(a0)
  140. move.b #$02,42(a0)
  141. move.b 1(a3),44(a0)
  142. move.b 2(a3),22(a0)
  143. clr.b 43(a0)
  144. clr.b 45(a0)
  145. clr.w 56(a0)
  146. adda.w #$004a,a0    ;Point to next voice's data area
  147. dbf d6,initloop2
  148. rts
  149.  
  150.  
  151. PLAY:
  152. lea pervol(pc),a6
  153. tst.w onoff
  154. bne.s music_on
  155. rts
  156. music_on:
  157. subq.w #1,respcnt        ;Decrease replayspeed counter
  158. bne.s nonewnote
  159. move.w repspd(pc),respcnt    ;Restore replayspeed counter
  160. lea V1data(pc),a0        ;Point to voice1 data area
  161. bsr.L new_note
  162. lea V2data(pc),a0        ;Point to voice2 data area
  163. bsr.L new_note
  164. lea V3data(pc),a0        ;Point to voice3 data area
  165. bsr.L new_note
  166. lea V4data(pc),a0        ;Point to voice4 data area
  167. bsr.L new_note
  168. nonewnote:
  169. clr.w audtemp
  170. lea V1data(pc),a0
  171. bsr.L effects
  172. move.w d0,(a6)+
  173. move.w d1,(a6)+
  174. lea V2data(pc),a0
  175. bsr.L effects
  176. move.w d0,(a6)+
  177. move.w d1,(a6)+
  178. lea V3data(pc),a0
  179. bsr.L effects
  180. move.w d0,(a6)+
  181. move.w d1,(a6)+
  182. lea V4data(pc),a0
  183. bsr.L effects
  184. move.w d0,(a6)+
  185. move.w d1,(a6)+
  186. lea pervol(pc),a6
  187. move.w audtemp(pc),d0
  188. ori.w #$8000,d0            ;Set/clr bit = 1
  189. move.w d0,-(a7)
  190. moveq #0,d1
  191. move.l start1(pc),d2        ;Get samplepointers
  192. move.w offset1(pc),d1        ;Get offset
  193. add.l d1,d2            ;Add offset
  194. move.l start2(pc),d3
  195. move.w offset2(pc),d1
  196. add.l d1,d3
  197. move.l start3(pc),d4
  198. move.w offset3(pc),d1
  199. add.l d1,d4
  200. move.l start4(pc),d5
  201. move.w offset4(pc),d1
  202. add.l d1,d5
  203. move.w ssize1(pc),d0        ;Get sound lengths
  204. move.w ssize2(pc),d1
  205. move.w ssize3(pc),d6
  206. move.w ssize4(pc),d7
  207. move.w (a7)+,$dff096        ;Enable audio DMA
  208. chan1:
  209. lea V1data(pc),a0
  210. tst.w 72(a0)
  211. beq.l chan2
  212. subq.w #1,72(a0)
  213. cmpi.w #1,72(a0)
  214. bne.s chan2
  215. clr.w 72(a0)
  216. move.l d2,$dff0a0        ;Set soundstart
  217. move.w d0,$dff0a4        ;Set soundlength
  218. chan2:
  219. lea V2data(pc),a0
  220. tst.w 72(a0)
  221. beq.s chan3
  222. subq.w #1,72(a0)
  223. cmpi.w #1,72(a0)
  224. bne.s chan3
  225. clr.w 72(a0)
  226. move.l d3,$dff0b0
  227. move.w d1,$dff0b4
  228. chan3:
  229. lea V3data(pc),a0
  230. tst.w 72(a0)
  231. beq.s chan4
  232. subq.w #1,72(a0)
  233. cmpi.w #1,72(a0)
  234. bne.s chan4
  235. clr.w 72(a0)
  236. move.l d4,$dff0c0
  237. move.w d6,$dff0c4
  238. chan4:
  239. lea V4data(pc),a0
  240. tst.w 72(a0)
  241. beq.s setpervol
  242. subq.w #1,72(a0)
  243. cmpi.w #1,72(a0)
  244. bne.s setpervol
  245. clr.w 72(a0)
  246. move.l d5,$dff0d0
  247. move.w d7,$dff0d4
  248. setpervol:
  249. lea $dff0a6,a5
  250. move.w (a6)+,(a5)    ;Set period
  251. move.w (a6)+,2(a5)    ;Set volume
  252. move.w (a6)+,16(a5)
  253. move.w (a6)+,18(a5)
  254. move.w (a6)+,32(a5)
  255. move.w (a6)+,34(a5)
  256. move.w (a6)+,48(a5)
  257. move.w (a6)+,50(a5)
  258. rts
  259.  
  260. NEW_NOTE:
  261. moveq #0,d5
  262. move.l 34(a0),a1
  263. adda.w 40(a0),a1
  264. cmp.w #64,40(a0)
  265. bne.L samepat
  266. move.l (a0),a2
  267. adda.w 6(a0),a2        ;Point to next sequence row
  268. cmpa.l 52(a0),a2    ;Is it the end?
  269. bne.s notend
  270. move.w d5,6(a0)        ;yes!
  271. move.l (a0),a2        ;Point to first sequence
  272. notend:
  273. moveq #0,d1
  274. addq.b #1,spdtemp
  275. cmpi.b #4,spdtemp
  276. bne.s nonewspd
  277. move.b d5,spdtemp
  278. move.b -1(a1),d1    ;Get new replay speed
  279. beq.s nonewspd
  280. move.w d1,respcnt    ;store in counter
  281. move.w d1,repspd
  282. nonewspd:
  283. move.b (a2),d1        ;Pattern to play
  284. move.b 1(a2),44(a0)    ;Transpose value
  285. move.b 2(a2),22(a0)    ;Soundtranspose value
  286.  
  287. move.w d5,40(a0)
  288. lsl.w #6,d1
  289. add.l PATpoint(pc),d1    ;Get pattern pointer
  290. move.l d1,34(a0)
  291. addi.w #$000d,6(a0)
  292. move.l d1,a1
  293. samepat:
  294. move.b 1(a1),d1        ;Get info byte
  295. move.b (a1)+,d0        ;Get note
  296. bne.s ww1
  297. andi.w #%11000000,d1
  298. beq.s noport
  299. bra.s ww11
  300. ww1:
  301. move.w d5,56(a0)
  302. ww11:
  303. move.b d5,47(a0)
  304. move.b (a1),31(a0)
  305.  
  306.         ;31(a0) = PORTAMENTO/INSTR. info
  307.             ;Bit 7 = portamento on
  308.             ;Bit 6 = portamento off
  309.             ;Bit 5-0 = instrument number
  310.         ;47(a0) = portamento value
  311.             ;Bit 7-5 = always zero
  312.             ;Bit 4 = up/down
  313.             ;Bit 3-0 = value
  314. t_porton:
  315. btst #7,d1
  316. beq.s noport
  317. move.b 2(a1),47(a0)    
  318. noport:
  319. andi.w #$007f,d0
  320. beq.L nextnote
  321. move.b d0,8(a0)
  322. move.b (a1),9(a0)
  323. move.b 32(a0),d2
  324. moveq #0,d3
  325. bset d2,d3
  326. or.w d3,audtemp
  327. move.w d3,$dff096
  328. move.b (a1),d1
  329. andi.w #$003f,d1    ;Max 64 instruments
  330. add.b 22(a0),d1
  331. move.l VOLpoint(pc),a2
  332. lsl.w #6,d1
  333. adda.w d1,a2
  334. move.w d5,16(a0)
  335. move.b (a2),23(a0)
  336. move.b (a2)+,24(a0)
  337. move.b (a2)+,d1
  338. andi.w #$00ff,d1
  339. move.b (a2)+,27(a0)
  340. move.b #$40,46(a0)
  341. move.b (a2)+,d0
  342. move.b d0,28(a0)
  343. move.b d0,29(a0)
  344. move.b (a2)+,30(a0)
  345. move.l a2,10(a0)
  346. move.l FRQpoint(pc),a2
  347. lsl.w #6,d1
  348. adda.w d1,a2
  349. move.l a2,18(a0)
  350. move.w d5,50(a0)
  351. move.b d5,26(a0)
  352. move.b d5,25(a0)
  353. nextnote:
  354. addq.w #2,40(a0)
  355. rts
  356.  
  357. EFFECTS:
  358. moveq #0,d7
  359. testsustain:
  360. tst.b 26(a0)        ;Is sustain counter = 0
  361. beq.s sustzero
  362. subq.b #1,26(a0)    ;if no, decrease counter
  363. bra.L VOLUfx
  364. sustzero:        ;Next part of effect sequence
  365. move.l 18(a0),a1    ;can be executed now.
  366. adda.w 50(a0),a1
  367. testeffects:
  368. cmpi.b #$e1,(a1)    ;E1 = end of FREQseq sequence
  369. beq.L VOLUfx
  370. cmpi.b #$e0,(a1)    ;E0 = loop to other part of sequence
  371. bne.s testnewsound
  372. move.b 1(a1),d0        ;loop to start of sequence + 1(a1)
  373. andi.w #$003f,d0
  374. move.w d0,50(a0)
  375. move.l 18(a0),a1
  376. adda.w d0,a1
  377. testnewsound:
  378. cmpi.b #$e2,(a1)    ;E2 = set waveform
  379. bne.s o49c64
  380. moveq #0,d0
  381. moveq #0,d1
  382. move.b 32(a0),d1
  383. bset d1,d0
  384. or.w d0,audtemp
  385. move.w d0,$dff096
  386. move.b 1(a1),d0
  387. andi.w #$00ff,d0
  388. lea SOUNDINFO(pc),a4
  389. add.w d0,d0
  390. move.w d0,d1
  391. add.w d1,d1
  392. add.w d1,d1
  393. add.w d1,d0
  394. adda.w d0,a4
  395. move.l 60(a0),a3
  396. move.l (a4),d1
  397. add.l #WAVEFORMS,d1
  398. move.l d1,(a3)
  399. move.l d1,68(a0)
  400. move.w 4(a4),4(a3)
  401. move.l 6(a4),64(a0)
  402. swap d1
  403. move.w #$0003,72(a0)
  404. tst.w d1
  405. bne.s o49c52
  406. move.w #$0002,72(a0)
  407. o49c52:
  408. clr.w 16(a0)
  409. move.b #$01,23(a0)
  410. addq.w #2,50(a0)
  411. bra.L o49d02
  412. o49c64:
  413. cmpi.b #$e4,(a1)
  414. bne.s testpatjmp
  415. move.b 1(a1),d0
  416. andi.w #$00ff,d0
  417. lea SOUNDINFO(pc),a4
  418. add.w d0,d0
  419. move.w d0,d1
  420. add.w d1,d1
  421. add.w d1,d1
  422. add.w d1,d0
  423. adda.w d0,a4
  424. move.l 60(a0),a3
  425. move.l (a4),d1
  426. add.l #WAVEFORMS,d1
  427. move.l d1,(a3)
  428. move.l d1,68(a0)
  429. move.w 4(a4),4(a3)
  430. move.l 6(a4),64(a0)
  431.  
  432. swap d1
  433. move.w #$0003,72(a0)
  434. tst.w d1
  435. bne.s o49cae
  436. move.w #$0002,72(a0)
  437. o49cae:
  438. addq.w #2,50(a0)
  439. bra.s o49d02
  440. testpatjmp:
  441. cmpi.b #$e7,(a1)
  442. bne.s testnewsustain
  443. move.b 1(a1),d0
  444. andi.w #$00ff,d0
  445. lsl.w #6,d0
  446. move.l FRQpoint(pc),a1
  447. adda.w d0,a1
  448. move.l a1,18(a0)
  449. move.w d7,50(a0)
  450. bra.L testeffects
  451. testnewsustain:
  452. cmpi.b #$e8,(a1)    ;E8 = set sustain time
  453. bne.s o49cea
  454. move.b 1(a1),26(a0)
  455. addq.w #2,50(a0)
  456. bra.L testsustain
  457. o49cea:
  458. cmpi.b #$e3,(a1)
  459. bne.s o49d02
  460. addq.w #3,50(a0)
  461. move.b 1(a1),27(a0)
  462. move.b 2(a1),28(a0)
  463. o49d02:
  464. move.l 18(a0),a1
  465. adda.w 50(a0),a1
  466. move.b (a1),43(a0)
  467. addq.w #1,50(a0)
  468. VOLUfx:
  469. tst.b 25(a0)
  470. beq.s o49d1e
  471. subq.b #1,25(a0)
  472. bra.s o49d70
  473. o49d1e:
  474. subq.b #1,23(a0)
  475. bne.s o49d70
  476. move.b 24(a0),23(a0)
  477. o49d2a:
  478. move.l 10(a0),a1
  479. adda.w 16(a0),a1
  480. move.b (a1),d0
  481. cmpi.b #$e8,d0
  482. bne.s o49d4a
  483. addq.w #2,16(a0)
  484. move.b 1(a1),25(a0)
  485. bra.s VOLUfx
  486. o49d4a:
  487. cmpi.b #$e1,d0
  488. beq.s o49d70
  489. cmpi.b #$e0,d0
  490. bne.s o49d68
  491. move.b 1(a1),d0
  492. andi.l #$003f,d0
  493. subq.b #5,d0
  494. move.w d0,16(a0)
  495. bra.s o49d2a
  496. o49d68:
  497. move.b (a1),45(a0)
  498. addq.w #1,16(a0)
  499. o49d70:
  500. move.b 43(a0),d0
  501. bmi.s o49d7e
  502. add.b 8(a0),d0
  503. add.b 44(a0),d0
  504. o49d7e:
  505. andi.w #$007f,d0
  506. lea PERIODS(pc),a1
  507. add.w d0,d0
  508. move.w d0,d1
  509. adda.w d0,a1
  510. move.w (a1),d0
  511. move.b 46(a0),d7
  512. tst.b 30(a0)
  513. beq.s o49d9e
  514. subq.b #1,30(a0)
  515.  
  516. bra.s o49df4
  517. o49d9e:
  518. move.b d1,d5
  519. move.b 28(a0),d4
  520. add.b d4,d4
  521. move.b 29(a0),d1
  522. tst.b d7
  523. bpl.s o49db4
  524. btst #0,d7
  525. bne.s o49dda
  526. o49db4:
  527. btst #5,d7
  528. bne.s o49dc8
  529. sub.b 27(a0),d1
  530. bcc.s o49dd6
  531. bset #5,d7
  532. moveq #0,d1
  533. bra.s o49dd6
  534. o49dc8:
  535. add.b 27(a0),d1
  536. cmp.b d4,d1
  537. bcs.s o49dd6
  538. bclr #5,d7
  539. move.b d4,d1
  540. o49dd6:
  541. move.b d1,29(a0)
  542. o49dda:
  543. lsr.b #1,d4
  544. sub.b d4,d1
  545. bcc.s o49de4
  546. subi.w #$0100,d1
  547. o49de4:
  548. addi.b #$a0,d5
  549. bcs.s o49df2
  550. o49dea:
  551. add.w d1,d1
  552. addi.b #$18,d5
  553. bcc.s o49dea
  554. o49df2:
  555. add.w d1,d0
  556. o49df4:
  557. eori.b #$01,d7
  558. move.b d7,46(a0)
  559.  
  560. ; DO THE PORTAMENTO THING
  561. moveq #0,d1
  562. move.b 47(a0),d1    ;get portavalue
  563. beq.s a56d0        ;0=no portamento
  564. cmpi.b #$1f,d1
  565. bls.s portaup
  566. portadown: 
  567. andi.w #$1f,d1
  568. neg.w d1
  569. portaup:
  570. sub.w d1,56(a0)
  571. a56d0:
  572. add.w 56(a0),d0
  573. o49e3e:
  574. cmpi.w #$0070,d0
  575. bhi.s nn1
  576. move.w #$0071,d0
  577. nn1:
  578. cmpi.w #$06b0,d0
  579. bls.s nn2
  580. move.w #$06b0,d0
  581. nn2:
  582. moveq #0,d1
  583. move.b 45(a0),d1
  584. rts
  585.  
  586.  
  587.  
  588. pervol: blk.b 16,0    ;Periods & Volumes temp. store
  589. respcnt: dc.w 0        ;Replay speed counter 
  590. repspd:  dc.w 0        ;Replay speed counter temp
  591. onoff:   dc.w 0        ;Music on/off flag.
  592. firseq:     dc.w 0        ;First sequence
  593. lasseq:     dc.w 0        ;Last sequence
  594. audtemp: dc.w 0
  595. spdtemp: dc.w 0
  596.  
  597. V1data:  blk.b 64,0    ;Voice 1 data area
  598. offset1: blk.b 02,0    ;Is added to start of sound
  599. ssize1:  blk.b 02,0    ;Length of sound
  600. start1:  blk.b 06,0    ;Start of sound
  601.  
  602. V2data:  blk.b 64,0    ;Voice 2 data area
  603. offset2: blk.b 02,0
  604. ssize2:  blk.b 02,0
  605. start2:  blk.b 06,0
  606.  
  607. V3data:  blk.b 64,0    ;Voice 3 data area
  608. offset3: blk.b 02,0
  609. ssize3:  blk.b 02,0
  610. start3:  blk.b 06,0
  611.  
  612. V4data:  blk.b 64,0    ;Voice 4 data area
  613. offset4: blk.b 02,0
  614. ssize4:  blk.b 02,0
  615. start4:  blk.b 06,0
  616.  
  617. o4a0c8: dc.l $00000000,$00100003,$00200006,$00300009
  618. SEQpoint: dc.l 0
  619. PATpoint: dc.l 0
  620. FRQpoint: dc.l 0
  621. VOLpoint: dc.l 0
  622.  
  623.  
  624. even
  625. SILENT: dc.w $0100,$0000,$0000,$00e1
  626.  
  627. PERIODS:dc.w $06b0,$0650,$05f4,$05a0,$054c,$0500,$04b8,$0474
  628.     dc.w $0434,$03f8,$03c0,$038a,$0358,$0328,$02fa,$02d0
  629.     dc.w $02a6,$0280,$025c,$023a,$021a,$01fc,$01e0,$01c5
  630.     dc.w $01ac,$0194,$017d,$0168,$0153,$0140,$012e,$011d
  631.     dc.w $010d,$00fe,$00f0,$00e2,$00d6,$00ca,$00be,$00b4
  632.     dc.w $00aa,$00a0,$0097,$008f,$0087,$007f,$0078,$0071
  633.     dc.w $0071,$0071,$0071,$0071,$0071,$0071,$0071,$0071
  634.     dc.w $0071,$0071,$0071,$0071,$0d60,$0ca0,$0be8,$0b40
  635.     dc.w $0a98,$0a00,$0970,$08e8,$0868,$07f0,$0780,$0714
  636.     dc.w $1ac0,$1940,$17d0,$1680,$1530,$1400,$12e0,$11d0
  637.     dc.w $10d0,$0fe0,$0f00,$0e28
  638.  
  639. SOUNDINFO:
  640. ;Offset.l , Sound-length.w , Start-offset.w , Repeat-length.w 
  641.  
  642. ;Reserved for samples
  643.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  644.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  645.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  646.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  647.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  648.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  649.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  650.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  651.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  652.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  653. ;Reserved for synth sounds
  654.     dc.w $0000,$0000 ,$0010 ,$0000 ,$0010 
  655.     dc.w $0000,$0020 ,$0010 ,$0000 ,$0010 
  656.     dc.w $0000,$0040 ,$0010 ,$0000 ,$0010 
  657.     dc.w $0000,$0060 ,$0010 ,$0000 ,$0010 
  658.     dc.w $0000,$0080 ,$0010 ,$0000 ,$0010 
  659.     dc.w $0000,$00a0 ,$0010 ,$0000 ,$0010 
  660.     dc.w $0000,$00c0 ,$0010 ,$0000 ,$0010 
  661.     dc.w $0000,$00e0 ,$0010 ,$0000 ,$0010 
  662.     dc.w $0000,$0100 ,$0010 ,$0000 ,$0010 
  663.     dc.w $0000,$0120 ,$0010 ,$0000 ,$0010 
  664.     dc.w $0000,$0140 ,$0010 ,$0000 ,$0010 
  665.     dc.w $0000,$0160 ,$0010 ,$0000 ,$0010 
  666.     dc.w $0000,$0180 ,$0010 ,$0000 ,$0010 
  667.     dc.w $0000,$01a0 ,$0010 ,$0000 ,$0010 
  668.     dc.w $0000,$01c0 ,$0010 ,$0000 ,$0010 
  669.     dc.w $0000,$01e0 ,$0010 ,$0000 ,$0010 
  670.     dc.w $0000,$0200 ,$0010 ,$0000 ,$0010 
  671.     dc.w $0000,$0220 ,$0010 ,$0000 ,$0010 
  672.     dc.w $0000,$0240 ,$0010 ,$0000 ,$0010 
  673.     dc.w $0000,$0260 ,$0010 ,$0000 ,$0010 
  674.     dc.w $0000,$0280 ,$0010 ,$0000 ,$0010 
  675.     dc.w $0000,$02a0 ,$0010 ,$0000 ,$0010 
  676.     dc.w $0000,$02c0 ,$0010 ,$0000 ,$0010 
  677.     dc.w $0000,$02e0 ,$0010 ,$0000 ,$0010 
  678.     dc.w $0000,$0300 ,$0010 ,$0000 ,$0010 
  679.     dc.w $0000,$0320 ,$0010 ,$0000 ,$0010 
  680.     dc.w $0000,$0340 ,$0010 ,$0000 ,$0010 
  681.     dc.w $0000,$0360 ,$0010 ,$0000 ,$0010 
  682.     dc.w $0000,$0380 ,$0010 ,$0000 ,$0010 
  683.     dc.w $0000,$03a0 ,$0010 ,$0000 ,$0010 
  684.     dc.w $0000,$03c0 ,$0010 ,$0000 ,$0010 
  685.     dc.w $0000,$03e0 ,$0010 ,$0000 ,$0010 
  686.     dc.w $0000,$0400 ,$0008 ,$0000 ,$0008 
  687.     dc.w $0000,$0410 ,$0008 ,$0000 ,$0008 
  688.     dc.w $0000,$0420 ,$0008 ,$0000 ,$0008 
  689.     dc.w $0000,$0430 ,$0008 ,$0000 ,$0008 
  690.     dc.w $0000,$0440 ,$0008 ,$0000 ,$0008
  691.     dc.w $0000,$0450 ,$0008 ,$0000 ,$0008
  692.     dc.w $0000,$0460 ,$0008 ,$0000 ,$0008
  693.     dc.w $0000,$0470 ,$0008 ,$0000 ,$0008
  694.     dc.w $0000,$0480 ,$0010 ,$0000 ,$0010
  695.     dc.w $0000,$04a0 ,$0008 ,$0000 ,$0008
  696.     dc.w $0000,$04b0 ,$0010 ,$0000 ,$0010
  697.     dc.w $0000,$04d0 ,$0010 ,$0000 ,$0010
  698.     dc.w $0000,$04f0 ,$0008 ,$0000 ,$0008
  699.     dc.w $0000,$0500 ,$0008 ,$0000 ,$0008
  700.     dc.w $0000,$0510 ,$0018 ,$0000 ,$0018
  701.  
  702.  
  703. WAVEFORMS:
  704. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  705. dc.w $3f37,$2f27,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  706. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  707. dc.w $c037,$2f27,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  708. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  709. dc.w $c0b8,$2f27,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  710. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  711. dc.w $c0b8,$b027,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  712. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  713. dc.w $c0b8,$b0a8,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  714. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  715. dc.w $c0b8,$b0a8,$a017,$0f07,$ff07,$0f17,$1f27,$2f37
  716. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  717. dc.w $c0b8,$b0a8,$a098,$0f07,$ff07,$0f17,$1f27,$2f37
  718. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  719. dc.w $c0b8,$b0a8,$a098,$9007,$ff07,$0f17,$1f27,$2f37
  720. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  721. dc.w $c0b8,$b0a8,$a098,$9088,$ff07,$0f17,$1f27,$2f37
  722. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  723. dc.w $c0b8,$b0a8,$a098,$9088,$8007,$0f17,$1f27,$2f37
  724. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  725. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$0f17,$1f27,$2f37
  726. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  727. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9017,$1f27,$2f37
  728. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  729. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$1f27,$2f37
  730. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  731. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$a027,$2f37
  732. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  733. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$a0a8,$2f37
  734. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  735. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$a0a8,$b037
  736. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  737. dc.w $7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  738. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  739. dc.w $817f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  740. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  741. dc.w $8181,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  742. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  743. dc.w $8181,$817f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  744. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  745. dc.w $8181,$8181,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  746. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  747. dc.w $8181,$8181,$817f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  748. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  749. dc.w $8181,$8181,$8181,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  750. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  751. dc.w $8181,$8181,$8181,$817f,$7f7f,$7f7f,$7f7f,$7f7f
  752. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  753. dc.w $8181,$8181,$8181,$8181,$7f7f,$7f7f,$7f7f,$7f7f
  754. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  755. dc.w $8181,$8181,$8181,$8181,$817f,$7f7f,$7f7f,$7f7f
  756. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  757. dc.w $8181,$8181,$8181,$8181,$8181,$7f7f,$7f7f,$7f7f
  758. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  759. dc.w $8181,$8181,$8181,$8181,$8181,$817f,$7f7f,$7f7f
  760. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  761. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$7f7f,$7f7f
  762. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  763. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$817f,$7f7f
  764. dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$8080
  765. dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$7f7f
  766. dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$8080
  767. dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$807f
  768. dc.w $8080,$8080,$8080,$8080,$7f7f,$7f7f,$7f7f,$7f7f
  769. dc.w $8080,$8080,$8080,$807f,$7f7f,$7f7f,$7f7f,$7f7f
  770. dc.w $8080,$8080,$8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  771. dc.w $8080,$8080,$807f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  772. dc.w $8080,$8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  773. dc.w $8080,$807f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  774. dc.w $8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  775. dc.w $8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  776. dc.w $8080,$9098,$a0a8,$b0b8,$c0c8,$d0d8,$e0e8,$f0f8
  777. dc.w $0008,$1018,$2028,$3038,$4048,$5058,$6068,$707f
  778. dc.w $8080,$a0b0,$c0d0,$e0f0,$0010,$2030,$4050,$6070
  779. dc.w $4545,$797d,$7a77,$7066,$6158,$534d,$2c20,$1812
  780. dc.w $04db,$d3cd,$c6bc,$b5ae,$a8a3,$9d99,$938e,$8b8a
  781. dc.w $4545,$797d,$7a77,$7066,$5b4b,$4337,$2c20,$1812
  782. dc.w $04f8,$e8db,$cfc6,$beb0,$a8a4,$9e9a,$9594,$8d83
  783. dc.w $0000,$4060,$7f60,$4020,$00e0,$c0a0,$80a0,$c0e0
  784. dc.w $0000,$4060,$7f60,$4020,$00e0,$c0a0,$80a0,$c0e0
  785. dc.w $8080,$9098,$a0a8,$b0b8,$c0c8,$d0d8,$e0e8,$f0f8
  786. dc.w $0008,$1018,$2028,$3038,$4048,$5058,$6068,$707f
  787. dc.w $8080,$a0b0,$c0d0,$e0f0,$0010,$2030,$4050,$6070
  788.